#include "msgq.h"
#include "bank.h"
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int msgid = 0;
MSG_CTOS ctos = {};
MSG_STOC stoc = {};

char id = 101;

void open_acc(void)
{
	stoc.acc.balance = 10;						//开户默认冲10元
	sprintf(stoc.acc.id,"%hhd",id++);			//id自动生成
	strcpy(stoc.acc.card,ctos.acc.card);
	strcpy(stoc.acc.pass,ctos.acc.pass);
	stoc.acc.islock = 0;
	
	char path[80] = {};
	char path0[40] = ACCOUNT_PATH;
	sprintf(path,"%s%s.dat",path0,stoc.acc.id);
	
	int fd = open(path,O_CREAT|O_RDWR|O_EXCL,0644);
	if(-1 == fd)
	{
		strcpy(stoc.info,"open");
		puts(stoc.info);
		close(fd);
		return;
	}
	if(0 > write(fd,&stoc.acc,sizeof(Account)))
	{
		strcpy(stoc.info,"write");
		puts(stoc.info);
		close(fd);
		return;
	}
	close(fd);
	strcpy(stoc.info,"success");
}

int main(int argc,const char* argv[])
{
	printf("argv %s\n",argv[0]);
	msgid = get_msg(ACCOUNT_PATH,SUBP_CNT);
	
	for(;;)
	{
		recv_msg(msgid,&ctos,sizeof(MSG_CTOS),MSGTY_OPEN);
		open_acc();
		stoc.type = ctos.return_type;
		send_msg(msgid,&stoc,sizeof(MSG_STOC));
	}	
}
